了解虛擬化與容器化之間的差異可以提高組織的可擴(kuò)展性并降低運(yùn)營成本。在本文中,我們將討論這兩種創(chuàng)建虛擬包的方法之間的具體差異,以及這兩種有價(jià)值的解決方案之間的一般差異。
關(guān)于服務(wù)器虛擬化的討論不可避免地圍繞VMware、Hyper-V以及在較小程度上還圍繞 Xen 和 KVM 展開。但另一個(gè)重要的內(nèi)容是Docker。
如果我們談?wù)?Docker,我們就是在談?wù)撊萜骰@與基于管理程序的服務(wù)器虛擬化有點(diǎn)不同。但是將應(yīng)用程序封裝在具有操作環(huán)境的容器中可以獲得將應(yīng)用程序加載到虛擬機(jī)上的許多好處:兩者都可以放在任何合適的物理機(jī)上并運(yùn)行,而無需擔(dān)心依賴關(guān)系。
Docker 與 VMware
當(dāng)然,Docker 和 VMware 之間的一個(gè)關(guān)鍵實(shí)際區(qū)別在于 Docker 是一個(gè)基于 Linux 的系統(tǒng),它利用了LXC,一個(gè)用于 Linux 內(nèi)核包含特性的用戶空間接口。
LXC 的目標(biāo)是創(chuàng)建一個(gè)盡可能接近標(biāo)準(zhǔn) Linux 安裝的環(huán)境,但不需要單獨(dú)的內(nèi)核。正如 linuxcontainers.org 網(wǎng)站所說:“LXC 容器通常被認(rèn)為介于 chroot 和成熟的虛擬機(jī)之間。”
因?yàn)?Docker 是建立在 LXC 之上的,所以它只能在 Linux 環(huán)境中運(yùn)行,并且只能運(yùn)行 Linux 應(yīng)用程序。因此,您可以忘記在 Windows 或任何其他可以愉快地在傳統(tǒng)虛擬機(jī)管理程序上運(yùn)行的操作系統(tǒng)上運(yùn)行的應(yīng)用程序。
另一個(gè)關(guān)鍵區(qū)別是,Docker 容器不是一個(gè)獨(dú)立的系統(tǒng),而是與運(yùn)行主機(jī)的操作系統(tǒng)共享它使用的 Linux 內(nèi)核。它還與也在主機(jī)上運(yùn)行的其他容器共享內(nèi)核。操作系統(tǒng)的共享部分是只讀的,而每個(gè)容器都有自己的寫入掛載。
容器化的好處
那么容器化與成熟的服務(wù)器虛擬化相比有什么好處呢?你什么時(shí)候會(huì)使用一個(gè)而不是另一個(gè)?
容器化的主要好處之一是,您通常可以在主機(jī)上打包比在虛擬機(jī)上更多的容器。這是有道理的,因?yàn)槊總€(gè)虛擬機(jī)本身就是一個(gè)獨(dú)立的系統(tǒng),擁有自己的操作系統(tǒng)和虛擬化硬件,以及分配給它的獨(dú)特資源。如果每個(gè) VM 的大小為 10Gb,那么 10 個(gè) VM 將占用 10×10 = 100Gb 的資源。
但是使用一個(gè) 10Gb 的容器并運(yùn)行其中的 10 個(gè),甚至 100 個(gè),您將不會(huì)使用任何接近 100Gb 的資源。這是由于所有正在發(fā)生的共享。
實(shí)際上,所有容器只共享一個(gè)操作系統(tǒng)(嚴(yán)格來說是一個(gè)內(nèi)核)。而且沒有虛擬化硬件——只有容器中的一個(gè)小應(yīng)用程序和操作環(huán)境。這意味著您可以在主機(jī)上運(yùn)行比運(yùn)行成熟的虛擬機(jī)更多的容器。
共享內(nèi)核和其他資源還有一個(gè)附加效果,那就是容器可以在不到一秒的時(shí)間內(nèi)啟動(dòng)。VM 的情況并非如此,VM 需要完整的虛擬系統(tǒng)啟動(dòng),并且可能需要更長的時(shí)間才能啟動(dòng)。
Canonical(Ubuntu 的贊助商)的負(fù)責(zé)人 Mark Shuttleworth 重申,速度是一個(gè)額外的好處。“Canonical 支持關(guān)鍵內(nèi)核和用戶空間工作,使您可以創(chuàng)建行為就像 VM 一樣的容器——你在其中有 root——即使你只是系統(tǒng)上的普通非 root 用戶。比 KVM 更快更輕,”他說。
還有其他好處。例如,您可以在 AWS 和 Azure 公共云上運(yùn)行 Docker 容器,并且容器易于共享。這對測試和開發(fā)團(tuán)隊(duì)特別有用——這是 Docker 最常被提及的潛在受益者之一。
容器化還不能替代成熟的服務(wù)器虛擬化
但對 VMware 和其他公司來說,好消息是容器化并不能替代成熟的基于管理程序的服務(wù)器虛擬化——至少現(xiàn)在還不能。
這是因?yàn)檫@個(gè)虛擬化世界被極其復(fù)雜的管理基礎(chǔ)架構(gòu)所包圍,它允許您存儲(chǔ)、啟動(dòng)和運(yùn)行虛擬機(jī),在主機(jī)之間實(shí)時(shí)遷移它們,創(chuàng)建高可用性集群等等。VMware 的 vCenter、Microsoft 的 System Center Virtual Machine Manager 和其他第三方管理產(chǎn)品等產(chǎn)品經(jīng)過多年的發(fā)展。
盡管 Google、Red Hat、CoreOS、IBM 和微軟都在開發(fā)開源Kubernetes Docker 管理系統(tǒng),但目前還沒有 Docker 可比的東西,該系統(tǒng)已迅速發(fā)展成為企業(yè) IT 的主要工具。
這一切都意味著 Docker 虛擬化技術(shù)在未來絕對值得關(guān)注。